#pragma once

#include <functional>

namespace FTLib
{
	class IPerformanceDataStore
	{
	public:
		virtual void AddPerformanceData(const wchar_t* szwDescription, double elapsedTime) = 0;
	};

	class IPerformanceDataQuery
	{
	public:
		virtual bool TryGetDouble(const wchar_t* szwDescription, double* pDbl) = 0;

		virtual void EnumDescriptions(std::function<bool(const std::wstring&)> func) = 0;
	};

	class IPerformanceDataControl
	{
	public:
		virtual void Clear() = 0;
	};

	class IPerformanceData : public IPerformanceDataQuery, public IPerformanceDataStore, public IPerformanceDataControl
	{};
}